#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
聊天记录证据分析API使用示例

本示例展示如何调用API分析聊天记录截图
"""

import requests
import json
import os

# API服务地址
API_BASE_URL = "http://localhost:8080"

def analyze_single_image(image_path):
    """
    分析单张聊天记录截图
    
    Args:
        image_path (str): 图片文件路径
    
    Returns:
        dict: 分析结果
    """
    if not os.path.exists(image_path):
        print(f"❌ 文件不存在: {image_path}")
        return None
    
    try:
        print(f"📤 正在上传并分析: {image_path}")
        
        with open(image_path, 'rb') as f:
            files = {'file': (os.path.basename(image_path), f, 'image/jpeg')}
            response = requests.post(f"{API_BASE_URL}/analyze_single", files=files)
        
        if response.status_code == 200:
            result = response.json()
            print("✅ 分析完成!")
            print("=" * 50)
            print(f"📱 文件类型: {result.get('文件类型')}")
            print(f"📝 文件内容: {result.get('文件内容')[:200]}...")
            print(f"⚖️  文件有效性说明: {result.get('文件有效性说明')[:200]}...")
            print(f"🎯 是否可以作为证据: {result.get('是否可以作为证据')}")
            print("=" * 50)
            return result
        else:
            print(f"❌ 分析失败: {response.status_code}")
            print(f"错误信息: {response.text}")
            return None
            
    except Exception as e:
        print(f"❌ 请求失败: {e}")
        return None

def analyze_multiple_images(image_paths):
    """
    批量分析多张聊天记录截图
    
    Args:
        image_paths (list): 图片文件路径列表
    
    Returns:
        dict: 批量分析结果
    """
    existing_paths = [path for path in image_paths if os.path.exists(path)]
    
    if not existing_paths:
        print("❌ 没有找到有效的图片文件")
        return None
    
    try:
        print(f"📤 正在批量上传并分析 {len(existing_paths)} 张图片...")
        
        files = []
        for path in existing_paths:
            with open(path, 'rb') as f:
                files.append(('files', (os.path.basename(path), f.read(), 'image/jpeg')))
        
        response = requests.post(f"{API_BASE_URL}/analyze_multiple", files=files)
        
        if response.status_code == 200:
            result = response.json()
            print("✅ 批量分析完成!")
            print("=" * 50)
            print(f"📊 总文件数: {result.get('total_files')}")
            
            for i, res in enumerate(result.get('results', [])):
                print(f"\n📄 文件 {i+1}: {res.get('filename')}")
                if res.get('error'):
                    print(f"   ❌ 错误: {res.get('error')}")
                else:
                    analysis = res.get('analysis', {})
                    print(f"   📱 类型: {analysis.get('文件类型')}")
                    print(f"   🎯 可作证据: {analysis.get('是否可以作为证据')}")
                    print(f"   📝 内容摘要: {analysis.get('文件内容')[:100]}...")
            
            print("=" * 50)
            return result
        else:
            print(f"❌ 批量分析失败: {response.status_code}")
            print(f"错误信息: {response.text}")
            return None
            
    except Exception as e:
        print(f"❌ 批量请求失败: {e}")
        return None

def check_api_health():
    """
    检查API服务健康状态
    
    Returns:
        bool: 服务是否正常
    """
    try:
        response = requests.get(f"{API_BASE_URL}/health")
        if response.status_code == 200:
            print("✅ API服务运行正常")
            return True
        else:
            print(f"❌ API服务异常: {response.status_code}")
            return False
    except Exception as e:
        print(f"❌ 无法连接到API服务: {e}")
        print("请确保API服务已启动 (运行: python start_server.py)")
        return False

def main():
    """
    主函数 - 演示API使用方法
    """
    print("🚀 聊天记录证据分析API使用示例")
    print("=" * 50)
    
    # 1. 检查API服务状态
    print("\n1️⃣ 检查API服务状态")
    if not check_api_health():
        return
    
    # 2. 查找测试图片
    test_images = ['1.png', '2.png', '3.png']
    available_images = [img for img in test_images if os.path.exists(img)]
    
    if not available_images:
        print("\n⚠️ 未找到测试图片文件")
        print("请将聊天记录截图命名为 1.png, 2.png, 3.png 并放在当前目录")
        print("\n💡 您也可以修改 test_images 列表来指定其他图片文件")
        return
    
    print(f"\n📁 找到 {len(available_images)} 张测试图片: {available_images}")
    
    # 3. 单张图片分析示例
    print("\n2️⃣ 单张图片分析示例")
    single_result = analyze_single_image(available_images[0])
    
    # 4. 多张图片批量分析示例
    if len(available_images) > 1:
        print("\n3️⃣ 多张图片批量分析示例")
        multiple_result = analyze_multiple_images(available_images[:3])  # 最多分析3张
    
    # 5. 保存结果到文件
    if single_result:
        print("\n4️⃣ 保存分析结果")
        output_file = "analysis_results.json"
        with open(output_file, 'w', encoding='utf-8') as f:
            json.dump({
                "single_analysis": single_result,
                "multiple_analysis": multiple_result if 'multiple_result' in locals() else None,
                "timestamp": str(pd.Timestamp.now()) if 'pd' in globals() else "unknown"
            }, f, ensure_ascii=False, indent=2)
        print(f"💾 结果已保存到: {output_file}")
    
    print("\n🎉 示例演示完成!")
    print("\n📚 更多用法请参考:")
    print(f"   - API文档: {API_BASE_URL}/docs")
    print("   - README.md 文件")
    print("   - test_api.py 测试脚本")

if __name__ == "__main__":
    main()